perm filename CONV.SAI[PIC,HE] blob sn#428036 filedate 1979-03-15 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN 
C00005 ENDMK
C⊗;
BEGIN 
REQUIRE "<>" DELIMITERS ;



DEFINE  INBSIZE = "8",
	OUTBSIZE  = "6",
	NLINES = "512",
	ILINLEN = "128",
	OLINLEN = "86" ,
	OUTWORDS = " NLINES * OLINLEN " , 
	INWORDS = " NLINES * ILINLEN ";
DEFINE CRLF = <'15&'12 >;
DEFINE IWAIT = <OUTSTR("WAITING FOR RETURN");
		INCHWL;> ;

BEGIN "IN"
INTEGER VAL, VALMAX, VALMIN ;
INTEGER ICH,OCH,BYTEPTR,OBYTEPTR,I,J,NVAL ;
REAL SCALE ;
INTEGER ARRAY INARRY[1:INWORDS],OUTARRY[1:OUTWORDS] ;
LABEL L1,L2,L3,L4,L5,L6;


L1: IWAIT;
COMMENT FIRST READ THE 8 BIT PACKED IMAGE ;
OUTSTR("INPUT FILE:");
ICH ← OPENFILE("","RC");
ARRYIN (ICH, INARRY[1],INWORDS);


L2:IWAIT ;
COMMENT NOW FIND THE MAX AND THE MIN ;
BYTEPTR ← POINT(INBSIZE,INARRY[1],-1);
VALMAX ← VALMIN ← 0 ;
FOR I ← 1 STEP 1 UNTIL  NLINES * NLINES DO 
	BEGIN
	VAL ← ILDB(BYTEPTR) ;
	VALMAX ← VALMAX MAX VAL ;
	VALMIN ← VALMIN MIN VAL ;
	END  ;
OUTSTR("MAXVAL IS "&CVS(VALMAX)&CRLF);
OUTSTR("MINVAL IS "&CVS(VALMIN)&CRLF);

L3:IWAIT;

SCALE ← 63.0/(VALMAX - VALMIN) ;
BYTEPTR ← POINT(INBSIZE,INARRY[1],-1);
FOR I ← 1 STEP 1 UNTIL 512 DO 
	BEGIN
	OBYTEPTR ← POINT (OUTBSIZE,OUTARRY[OLINLEN*(I-1)+1],-1);
	FOR J ← 1 STEP 1 UNTIL 512 DO 
		BEGIN
		VAL ← ILDB(BYTEPTR) ;
		NVAL ← (VAL - VALMIN) * SCALE ;
		IDPB(NVAL,OBYTEPTR) ;
		END ;
	END  ;


L4:IWAIT;
OUTSTR("OUTPUT FILE:");
OCH ← OPENFILE("","WC");
ARRYOUT(OCH,OUTARRY[1],OUTWORDS);
L5:IWAIT;

CFILE(ICH);
CFILE(OCH);

END "IN" ;
END ;